Cette page explique étape par étape comment compiler FreeCAD 0.19 ou plus récent sous Windows en utilisant le compilateur MSVC de Microsoft. Pour des informations sur l'utilisation de MSYS2/MinGW voir Compiler sous MinGW. Pour les autres plateformes, voir Compiler.
La compilation de FreeCAD sous Windows nécessite plusieurs outils et bibliothèques.
Nous décrivons ci-après la gestion du code source à l'aide de l'interface TortoiseGit. Cette interface s'intègre directement dans l'explorateur de fichiers Windows et dispose d'une large communauté d'utilisateurs pour obtenir de l'aide en cas de problème.
Vous pouvez maintenant obtenir le code source de FreeCAD :
Lorsque vous utilisez le Git frontend TortoiseGit :
https://github.com/FreeCAD/FreeCAD.git
et cliquez sur OK.
Le dernier code source sera téléchargé à partir du dépôt FreeCAD Git et le dossier sera suivi par Git.
Pour créer une branche locale et télécharger le code source, vous devez ouvrir un terminal (invite de commande) et entrez dans le répertoire ou vous désirez placer le code source, puis tapez :
git clone --recurse-submodules https://github.com/FreeCAD/FreeCAD.git
Le compilateur par défaut (recommandé) est MS Visual Studio (MSVC). Bien qu'il soit possible d'utiliser d'autres compilateurs, par exemple gcc via Cygwin ou MinGW, cela n'est pas testé ni couvert ici.
Vous pouvez obtenir une version gratuite de MSVC (pour un usage individuel) en téléchargeant l 'édition Community de MS Visual Studio.
Pour ceux qui ne veulent pas installer l'énorme MSVC uniquement pour avoir un compilateur, voir CompileOnWindows - Réduire l'espace disque.
Remarque : Bien que l'édition Community de MSVC soit gratuite, pour utiliser l'EDI pendant plus de 30 jours, vous devez créer un compte Microsoft. Si vous ne compilez qu'en utilisant la ligne de commande, vous n'avez pas besoin de l'EDI et donc pas de compte Microsoft.
Comme alternative gratuite et OpenSource IDE, vous pouvez utiliser KDevelop. Vous pouvez utiliser KDevelop pour modifier et écrire du code C ++, mais vous devez utiliser la ligne de commande pour compiler.
Vous pouvez éventuellement inclure les chemins d'accès à certains dossiers de la variable système PATH. Ceci est utile si vous souhaitez accéder aux programmes de ces dossiers à partir de la ligne de commande/powershell ou si vous souhaitez que des programmes spéciaux soient trouvés par le compilateur ou CMake. En outre, l’ajout de dossiers à PATH peut s’avérer nécessaire si vous n’utilisez pas les options correspondantes lors de l’installation du programme.
C:\Program Files\CMake\bin à PATH.
C:\Program Files\TortoiseGit\bin à PATH.
Pour ajouter à votre chemin au système :
Une fois que vous avez tous les outils, bibliothèques et code source FreeCAD nécessaires, vous êtes prêt à commencer le processus de configuration et de compilation. Ce processus se déroulera en cinq étapes :
Tout d'abord, configurez l'environnement de compilation en utilisant CMake :
Remarque: Il est important de spécifier la variante de bit correcte. Si vous avez la variante 64 bits de LibPack, vous devez également utiliser le compilateur x64.
Cela commencera la configuration et échouera à cause de paramètres manquants. C'est normal, vous n'avez pas encore spécifié l'emplacement du LibPack. Cependant, d'autres problèmes peuvent survenir et nécessiter une action supplémentaire de votre part.
S'il échoue avec le message Visual Studio est introuvable, la prise en charge de CMake dans MSVC n'est pas encore installée. Pour l'installer :
Si cela échoue avec un message sur la mauvaise version de Python ou Python manquant, alors :
S'il n'y a pas d'erreur concernant Visual Studio ou Python, tout va bien, mais CMake ne connaît pas encore tous les paramètres nécessaires. Donc maintenant :
Il ne devrait plus y avoir d’erreurs. Si vous continuez à rencontrer des erreurs que vous ne pouvez pas diagnostiquer, allez sur le Forum Install/Compile de FreeCAD. Si CMake a procédé correctement, cliquez sur Generate. Une fois cela fait, vous pouvez fermer CMake et démarrer la compilation de FreeCAD à l'aide de Visual Studio. Cependant, pour la première compilation, gardez-le ouvert au cas où vous voudriez ou auriez besoin de changer certaines options pour le processus de construction.
Le système de compilation CMake vous permet de contrôler certains aspects du processus de compilation. En particulier, vous pouvez activer et désactiver certaines fonctionnalités ou modules à l'aide des variables CMake.
Voici la description de certaines de ces variables :
Nom de la variable | Description | Valeur par défaut |
---|---|---|
BUILD_XXX | Compile FreeCAD avec le composant XXX. Si vous ne voulez/nécessitez pas compiler par exemple l'atelier OpenSCAD, désactivez la variable BUILD_OPENSCAD. FreeCAD n'aura alors pas cet atelier.
Remarque: Certains composants sont nécessaires pour d'autres composants. Si vous décochez par exemple BUILD_ROBOT, CMake vous informera qu'alors le composant Path ne pourra pas être compilé correctement. Vérifiez donc la sortie de CMake après avoir modifié une option BUILD_XXX! |
ca dépend |
BUILD_ENABLE_CXX_STD | La version du standard du langage C++. C++14 est la plus élevée possible pour FreeCAD 0.19 alors qu'au moins C++17 est nécessaire pour FreeCAD 0.20. Voir aussi la note dans la section Construire avec Visual Studio 15 (2017) et 16 (2019) | ca dépend |
BUILD_DESIGNER_PLUGIN | Pour construire le plugin Qt Designer, voir cette section ci-dessous | OFF |
BUILD_FLAT_MESH | Nécessaire pour avoir une version qui inclut la fonction Développer un objet maillé. | OFF |
CMAKE_INSTALL_PREFIX | Le dossier de sortie lors de la construction de la cible INSTALL, voir aussi la section Exécution et installation de FreeCAD | Le dossier d'installation par défaut de Windows |
FREECAD_COPY_DEPEND_DIRS_TO_BUILD | Copie les bibliothèques dépendantes nécessaires à l'exécution de FreeCAD.exe dans le dossier de build. Voir aussi la section Exécution et installation de FreeCAD. Remarque : les options FREECAD_COPY_XXX n'apparaissent que si les bibliothèques n'ont pas déjà été copiées. Si vous avez seulement besoin de mettre à jour/changer pour une autre version du LibPack, voir la section Mise à jour de LibPack. Si vous voulez ramener les options pour une raison quelconque, vous devez supprimer tous les dossiers de votre dossier de construction, à l'exception du dossier LibPack. Dans CMake, supprimez le cache et démarrez comme si vous compiliez pour la première fois. |
OFF |
FREECAD_COPY_LIBPACK_BIN_TO_BUILD | Copie les binaires LibPack nécessaires à l'exécution de FreeCAD.exe dans le dossier de compilation. Voir aussi la section Exécution et installation de FreeCAD. | OFF |
FREECAD_COPY_PLUGINS_BIN_TO_BUILD | Copie les fichiers plugins de Qt nécessaires à l'exécution de FreeCAD.exe dans le dossier de compilation. Voir aussi la section Exécution et installation de FreeCAD. | OFF |
FREECAD_LIBPACK_USE | Active ou désactive l'utilisation du LibPack de FreeCAD | ON |
FREECAD_LIBPACK_DIR | Répertoire où se trouve le LibPack | Dossier du code source de FreeCAD |
FREECAD_RELEASE_PDB | Créer des bibliothèques de débogage (*.pdb) également pour les compilations de version. Cela n'affecte pas la vitesse (comme le ferait une vraie compilation de débogage) et peut être très utile pour localiser les crashs dans le code de FreeCAD. En cas de crash de FreeCAD, un fichier crash.dmp sera créé et pourra être chargé avec MSVC et si vous avez les fichiers PDB correspondants ainsi que le code source de cette version, vous pourrez déboguer le code. Sans les fichiers PDB, il n'est pas possible de déboguer le code et tout ce que le débogueur montre est le nom de la DLL où le crash s'est produit. | ON |
FREECAD_USE_MP_COMPILE_FLAG | Ajoute l'option /MP (multiprocesseur) aux projets Visual Studio, permettant des accélérations sur les CPU multi-cœurs. Cela peut accélérer considérablement les builds sur les processeurs modernes. Remarque : Si vous désactivez FREECAD_USE_PCH, la compilation peut rapidement surcharger votre espace de tas, même si vous avez 16 Go de RAM. |
ON |
FREECAD_USE_PCH | Précompilation des en-têtes afin de gagner du temps de compilation. | ON |
FREECAD_USE_PYBIND11 | Inclut la bibliothèque PyBind11. Nécessaire pour avoir un build qui inclut la fonction Développer un objet maillé. Remarque : après l'avoir allumé, vous pourriez obtenir une erreur de configuration. Il suffit de configurer à nouveau et le problème devrait disparaître. |
OFF |
En fonction de votre compilateur, le processus de compilation de FreeCAD sera légèrement différent. Dans les sections suivantes, les processus connus sont décrits. Si vous compilez avec Qt Creator, passez à Compilation avec Qt Creator (obsolète), sinon procédez directement :
Si vous souhaitez compiler à partir de la ligne de commande, l'affichage de CMake vous indiquera la commande à exécuter (qui dépend du répertoire de la release configurée). Mais cette commande produira une compilation Debug qui ne fonctionne pas sous Windows et entraîne une erreur d'importation de Numpy dans FreeCAD (problème connu mais difficile à résoudre). Vous devez spécifier l'option --config Release pour forcer une compilation Release :
cmake --build E:/release --config Release
Notez que la définition de variables CMake comme CMAKE_BUILD_TYPE n'a aucun effet, seule la spécification de l'option --config comme indiqué ci-dessus fonctionne.
Cela va prendre pas mal de temps.
Pour compiler un FreeCAD prêt à l’emploi, compilez la cible INSTALL, voir la section Exécution et installation de FreeCAD.
Si vous n'obtenez aucune erreur, vous avez terminé. Félicitations ! Vous pouvez quitter MSVC ou le garder ouvert.
Important : à partir de Visual Studio 17.4, vous ne pouvez pas utiliser l'optimisation de code activée par défaut pour la cible SketcherGui. Si vous le faites, les contraintes d'angle seront mal placées dans les esquisses. Pour résoudre ce problème, cliquez avec le bouton droit de la souris sur cette cible dans l'explorateur de solutions MSVC et sélectionnez la dernière entrée Properties dans le menu contextuel. Dans la fenêtre de dialogue qui apparaît, allez dans C/C++ → Optimisation et désactivez le paramètre Optimization. Enfin, recompilez la cible ALL_BUILD.
Pour une version de débogage, il est nécessaire d'utiliser le Python inclus dans le LibPack. Pour assurer cela :
Comme pré-requis pour la compilation debug, vous devez faire ceci :
Maintenant vous pouvez compiler :
Cette opération va maintenant prendre beaucoup de temps.
S'il n'y a pas eu d'erreurs de compilation, et si les options FREECAD_COPY_* mentionnées dans l'étape configuration avec CMake ci-dessus ont été activées, vous pouvez commencer la compilation de débogage :
Cela lancera la version de débogage de FreeCAD et vous pourrez utiliser MSVC IDE pour le déboguer.
Tutoriel en anglais qui commence par la configuration dans CMake Gui et continue jusqu'à la commande `Build` dans Visual Studio 16 2019 est disponible non répertorié sur YouTube à Tutorial: Build FreeCAD from source on Windows 10.
Maintenant FreeCAD est construit
Une fois terminé, il peut être exécuté: Il y a 2 triangles verts en bas à gauche. Un est pour la mise au point. L'autre est pour l'exécution. Faites votre choix.
Les étapes pour compiler à partir de la ligne de commande dépendent du compilateur. Pour MSVC 2017, les étapes sont les suivantes:
msbuild ALL_BUILD.vcxproj /p:Configuration=Release
ou
msbuild INSTALL.vcxproj /p:Configuration=Release
Ces étapes peuvent également être automatisées. Voici par exemple une solution pour MSVC 2017 :
compile-FC install
Au lieu d'appeler compile-FC avec l'option installer, vous pouvez aussi utiliser déboguer ou release :
déboguer - compiler FreeCAD dans la configuration de débogage
release - compiler FreeCAD dans la configuration de release
install - compiler FreeCAD dans la configuration de la version et créer une installation
Il existe 2 méthodes pour exécuter la compilation de FreeCAD :
Method 1 : Vous exécutez FreeCAD.exe que vous trouvez dans votre dossier de construction qui se trouve dans le sous-dossier bin
Method 2 : Vous construisez la cible INSTALL
La méthode 2 est la plus simple, car elle assure automatiquement que toutes les bibliothèques requises pour exécuter FreeCAD.exe se trouvent dans le bon dossier. FreeCAD.exe et les bibliothèques seront sortis dans le dossier que vous avez spécifié dans la variable CMake CMAKE_INSTALL_PREFIX.
Pour la méthode 1, vous devez activer les options FREECAD_COPY_* mentionnées dans l'étape configuration avec CMake ci-dessus.
Lors de l'exécution de FreeCAD, vous pouvez rencontrer des DLLs manquantes lors de l'utilisation de certains ateliers ou fonctionnalités d'ateliers. Le message d'erreur dans la console de FreeCAD ne vous dira pas quelle DLL est manquante. Pour le savoir, vous devez utiliser un outil externe :
import os os.system(r"~DependenciesGui.exe")
Note : Au lieu du ~, vous devez spécifier le chemin complet du DependenciesGui.exe sur votre système.
FreeCAD est très activement développé. Par conséquent, son code source change presque quotidiennement. De nouvelles fonctionnalités sont ajoutées et des bugs corrigés. Pour bénéficier de ces modifications du code source, vous devez reconstruire votre FreeCAD. Cette reconstruction se fait en deux étapes:
Lorsque vous utilisez le Git frontend TortoiseGit :
Cliquez enfin sur OK.
Ouvrez un terminal (invite de commande) et accédez au répertoire source. Puis tapez :
git pull https://github.com/FreeCAD/FreeCAD.git master
où master est le nom de la branche principale du développement. Si vous voulez obtenir le code d’une autre branche, utilisez son nom au lieu de master.
Si une nouvelle version majeure d'une dépendance tierce comme Open Cascade est publiée, ou si une dépendance tierce a des corrections de bogues importantes, un nouveau LibPack est publié. Vous pouvez trouver la dernière version ici.
Pour mettre à jour votre LibPack, la recette suivante est la meilleure pratique :
Pour rejoindre le développement FreeCAD, vous devez compiler et installer les outils suivants :
FreeCAD utilise Qt comme boîte à outils pour son interface utilisateur. Toutes les boîtes de dialogue sont configurées dans des fichiers UI qui peuvent être modifiés à l'aide du programme Qt Designer. Il fait partie de toute installation Qt et également inclus dans le LibPack. FreeCAD a son propre ensemble de widgets Qt pour fournir des fonctionnalités spéciales comme l'ajout d'une unité aux champs de saisie et pour définir les propriétés des préférences.
Le plugin ne peut pas être chargé par le Qt Designer s'il a été compilé en utilisant une autre version de Qt que celle sur laquelle votre Qt Designer/Qt Creator est basé. Par conséquent, le plugin doit être compilé en même temps que FreeCAD :
Le résultat est le fichier du plugin FreeCAD_widgets.dll dans le dossier
~src\Tools\plugins\widget\Release
Pour installer le plugin, copiez la DLL soit vers :
Enfin, (re)lancez Qt Designer et vérifiez son menu Help → Plugins. Si le plugin FreeCAD_widgets.dll est répertorié comme étant chargé, vous pouvez maintenant concevoir et modifier les fichiers .ui de FreeCAD, sinon vous devez compiler vous-même la DLL.
Si vous préférez utiliser Qt Creator au lieu de Qt Designer, le fichier du plugin doit être placé dans ce dossier :
C:\Qt\Qt5.15.2\Tools\QtCreator\bin\plugins\designer
Puis (re)lancez Qt Creator Qt Creator, passez en mode Design puis vérifiez le menu Tools → Form Editor → About Qt Designer Plugins. Si le plugin FreeCAD_widgets.dll est répertorié comme étant chargé, vous pouvez maintenant concevoir et modifier les fichiers .ui de FreeCAD. Sinon, vous devez compiler vous-même la DLL.
FreeCAD a la fonctionnalité de fournir des vignettes d'aperçu pour les fichiers *.FCStd. Cela signifie que dans l'explorateur de fichiers Windows, les fichiers *.FCStd sont affichés avec une capture d'écran du modèle qu'il contient. Pour fournir cette fonctionnalité, FreeCAD doit avoir le fichier FCStdThumbnail.dll installé sur Windows.
La DLL est installée de cette façon :
regsvr32 FCStdThumbnail.dll
Vérifiez donc si cela fonctionne, assurez-vous que dans FreeCAD, l'option de préférences Enregistrer la miniature dans le fichier de projet lors de l'enregistrement du document est activée et enregistre un modèle. Affichez ensuite dans l'Explorateur Windows le dossier du modèle enregistré à l'aide d'une vue de symboles. Vous devriez maintenant voir une capture d'écran du modèle dans la vue des dossiers.
Pour compiler le FCStdThumbnail.dll
LibPack est livré avec une version d'Open Cascade qui convient à une utilisation générale. Cependant, dans certaines circonstances, vous pouvez souhaiter compiler avec une autre version d'Open Cascade, comme l'une de leurs versions officielles, ou un fork patché.
Lorsque vous compilez Open Cascade pour FreeCAD, notez qu'il n'y a aucune garantie que FreeCAD fonctionnera avec toutes les versions d'Open Cascade. Notez également que lorsque vous utilisez la bibliothèque Netgen, vous devez utiliser la version NetGen approuvée pour la compilation avec la version d'Open Cascade que vous souhaitez compiler.
Pour compiler :
Nom de la variable | Description | Valeur par défaut |
---|---|---|
3RDPARTY_DIR | Le chemin vers les composants tiers. Il est recommandé d'utiliser en entrée le dossier où se trouve votre LibPack utilisé. Laissez explicitement ce champ vide. | vide |
3RDPARTY_DOXYGEN_EXECUTABLE | Le chemin vers l'exécutable du composant tiers Doxygen. Il est recommandé d'installer Doxygen. CMake le trouvera alors automatiquement. | vide |
3RDPARTY_FREETYPE_DIR | Le chemin vers le composant tiers nécessaire Freetype. Il est recommandé d'utiliser comme entrée le dossier où se trouve votre LibPack utilisé. | vide |
3RDPARTY_RAPIDJSON_DIR | Uniquement disponible si USE_RAPIDJSON est utilisé. Le chemin vers le composant tiers RapidJSON. Il est recommandé de NE PAS utiliser un dossier LibPack existant comme entrée. Vous pouvez utiliser le dossier RapidJSOn d'un LibPack, mais copiez-le dans un nouveau dossier et utilisez ce nouveau dossier comme entrée. | vide |
3RDPARTY_TCL_DIR | Le chemin vers le composant tiers nécessaire TCL. Il est recommandé de ne PAS utiliser un dossier LibPack existant comme entrée. Prenez par exemple une des ces versions, extrayez-la et prenez-la comme dossier d'entrée pour CMake. | vide |
3RDPARTY_TK_DIR | Le chemin vers le composant tiers nécessaire TK. Il est recommandé de ne PAS utiliser un dossier LibPack existant comme entrée. Prenez par exemple une des ces versions, extrayez-la et prenez-la comme dossier d'entrée pour CMake. | vide |
3RDPARTY_VTK_DIR | Uniquement disponible si USE_VTK est utilisé. Le chemin vers le composant tiers nécessaire VTK. Il est recommandé d'utiliser le dossier en entrée où se trouve votre LibPack utilisé. Si vous utilisez un autre dossier, assurez-vous que vous n'utilisez pas VTK 9.x ou plus récent. | Vide |
BUILD_RELEASE_DISABLE_EXCEPTIONS | Désactive la gestion des exceptions pour les builds de version. Pour FreeCAD vous devez le régler sur OFF. | ON |
INSTALL_DIR | Le dossier de sortie lors de la construction de la cible INSTALL. Si la construction a réussi, prenez les fichiers de ce dossier pour mettre à jour votre LibPack. | Dossier d'installation du programme par défaut de Windows |
INSTALL_DIR_BIN | Le sous-dossier de sortie pour la DLL lors de la construction de la cible INSTALL. Vous devez le remplacer par bin. | win64/vc14/bin |
INSTALL_DIR_LIB | Le sous-dossier de sortie pour les fichiers .lib lors de la construction de la cible INSTALL. Vous devez le remplacer par lib. | win64/vc14/lib |
USE_RAPIDJSON | Pour compiler Open Cascade avec le support de RapidJSON. L'activation de cette option est obligatoire pour obtenir le support du format de fichier glTF. | OFF |
USE_VTK | Pour compiler Open Cascade avec le support de VTK. L'activation de cette option est optimale. Vous pouvez l'utiliser pour construire le pont VTK d'Open Cascade. | OFF |
Pour compiler FreeCAD en utilisant Open Cascade auto-compilé, vous devez effectuer les opérations suivantes :
LibPack est livré avec une version de Netgen qui a été testée pour être construite avec la version Open Cascade du LibPack. Le problème est que chaque nouvelle version de Netgen modifie l'API. De même, chaque nouvelle version d'Open Cascade fait de même. Par conséquent, on ne peut pas changer facilement la version de Netgen.
Cependant, vous pouvez tout de même construire Netgen. C'est une tâche facile :
Nom de la variable | Description | Valeur par défaut |
---|---|---|
CMAKE_INSTALL_PREFIX | Le dossier de sortie lors de la compilation de la cible INSTALL. Si la compilation a réussi, prenez les fichiers de ce dossier pour mettre à jour votre LibPack. | C:/netgen |
OpenCasCade_DIR | Le chemin vers les fichiers CMake d'Open Cascade. Si vous avez compilé Open Cascade comme décrit dans la section Compilation d'Open Cascade, vous pouvez utiliser le sous-dossier cmake du dossier que vous avez utilisé comme INSTALL_DIR. Sinon, utilisez le sous-dossier cmake de votre LibPack. Notez que le LibPack doit alors déjà contenir une compilation correcte d'Open Cascade. Indépendamment du dossier que vous utilisez, vous devez maintenant y créer un sous-dossier lib et y copier les fichiers freetype.lib et freetyped.lib de votre LibPack. | vide |
USE_GUI | Mettez-le sur OFF. | ON |
USE_NATIVE_ARCH | Mettez la valeur OFF ; ceci n'est nécessaire et important que pour supporter les anciens processeurs qui n'ont pas le jeu d'instructions AVX2. | ON |
USE_OCC | Mettez-le sur ON. | OFF |
USE_PYTHON | Mettez-le sur OFF. | ON |
USE_SUPERBUILD | Mettez-le sur OFF. | ON |
ZLIB_INCLUDE_DIR | Le chemin vers le composant tiers nécessaire zlib. Il est recommandé d'utiliser en entrée le dossier où se trouve votre LibPack utilisé. | vide |
ZLIB_LIBRARY_DEBUG | Le chemin vers le fichier ZLib zlibd.lib. Il est situé dans le sous-dossier lib de votre dossier LibPack. | vide |
ZLIB_LIBRARY_RELEASE | Le chemin vers le fichier ZLib zlib.lib. Il est situé dans le sous-dossier lib de votre dossier LibPack. | vide |
nom : CMAKE_DEBUG_POSTFIX, type : string, contenu : _d
Cela garantit que les noms de fichiers des bibliothèques de débogage ont un autre nom que les bibliothèques de publication et ne peuvent pas être échangés accidentellement par la suite.
Pour compiler FreeCAD en utilisant l'auto-compilation de Netgen, vous devez faire ce qui suit :
Voir aussi